/*
 * Unigrama.hpp
 *
 *  Created on: 27/11/2014
 *      Author: nico
 */

#ifndef TRUNK_TP_DATOS_SRC_UNIGRAMA_HPP_
#define TRUNK_TP_DATOS_SRC_UNIGRAMA_HPP_

#include <string>
#include <map>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/string.hpp>

using namespace std;
using namespace boost::archive;

typedef unsigned int Ocurrencias;
typedef float Probabilidad;

class Unigrama {

private:
	friend class boost::serialization::access;
	template <class Archive>
	friend void serialize (Archive &ar, Unigrama &unigrama, const unsigned int version){
		ar & unigrama.termino;
		ar & unigrama.ocurrencias;
		ar & unigrama.probabilidad;
	}
	string termino;
	Ocurrencias ocurrencias;
	Probabilidad probabilidad;

public:
	Unigrama();
	Unigrama(string termino);
	Unigrama (const Unigrama& unigrama); //constructor de copia
	~Unigrama();

	string getTermino();
	Ocurrencias getOcurrencias();
	Probabilidad getProbabilidad();
	void inc();
	void sumarOcurrencias (Ocurrencias ocurrencias);
	void setProbabilidad(Probabilidad probabilidad);
	friend bool operator< (const Unigrama& u1, const Unigrama& u2);
	//TODO int getHash (string* termino);
};

#endif /* TRUNK_TP_DATOS_SRC_UNIGRAMA_HPP_ */
